package com.huawei.crm.event;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;

/**
 * .
 * 除了通过实现接口，还可以使用@EventListener 注解，实现对任意的方法都能监听事件。
 * <p>
 * 在任意方法上标注@EventListener 注解，指定 classes，即需要处理的事件类型，一般就是 ApplicationEven 及其子类，可以设置多项。
 *
 * @author luohua
 */
@Configuration
public class EventConfig {

    @EventListener(classes = {ApplicationEvent.class})
    public void listen(ApplicationEvent event) {
        System.out.println("使用@EventListener监听事件，事件触发：" + event.getClass().getName());
    }

    @EventListener
    public void listener1(MyTestEvent event) {
        System.out.println("注解监听器1:" + event.getMsg());
    }

    @EventListener(condition = "#event.source == 'test'")
    public void listener2(MyTestEvent event) {
        System.err.println("注解监听器2:" + event.getMsg());
    }
}